#ifndef _MAIN_SCREEN_H_
# define _MAIN_SCREEN_H_

# include <SDL/SDL.h>
# include "Utils\\IScreen.h"
# include "Utils\\ScreenManager.h"
# include "Utils\\IArgs.h"
# include "Utils\\Surface.h"
# include "Bloc.h"
# include "BlocManager.h"

struct MainArgs : public SDL::UTILS::ScreenArgs
{
public:
	bool LoadSimulator;

public:
	MainArgs(SDL_Surface* _screen, SDL_Event* _event);
	virtual ~MainArgs();
};

class MainScreen : public SDL::UTILS::IScreen
{
private:
	SDL::UTILS::ScreenManager m_screens;
	SDL::UTILS::Surface m_loadedBackground;
	std::string m_backgroundFile;
	std::wstring m_mapFile;
	Bloc* m_currentBloc;
	bool m_showGrid;
	BlocManager m_blocManager;

public:
	MainScreen(SDL_Surface* _screen, SDL_Event* _event);
	~MainScreen();

	virtual void Draw(SDL::UTILS::IArgs* _datas);
	virtual void Exec(SDL::UTILS::IArgs* _datas);

	static bool Manage(SDL::UTILS::ScreenManager::Element* _caller,
					   SDL::UTILS::IArgs* _args);
};

#endif // _MAIN_SCREEN_H_
